Conventionally, graphics data is processed on a graphics processor through the use of threads executing on the graphics processor. Threads executing on the graphics processor generate thread data, such as, source data, destination data, and intermediate data generated during execution of the thread. The thread data is typically stored into a first available memory location of a memory resource being used to store thread data. Therefore, thread data generated by a same thread may be located in non-neighboring locations throughout the memory resource.
Conventionally, memory resources storing thread data in non-neighboring locations produce significant cross-thread interaction where one thread inadvertently accesses thread data of another thread. Memory resources storing thread data in non-neighboring locations also produce low access coherency where thread data in neighboring memory locations are unrelated. Access coherency is important in graphics processing since a single read command for a memory location typically accesses the memory location and a group of neighboring memory locations in one retrieval. Therefore, when a read command is performed, it is desirable to have high access coherency so that the group of neighboring memory locations that is read contain related thread data.